// import com.alibaba.druid.DruidRuntimeException;
// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
#pragma once
#include "MySqlStatementImpl.h"

class MySqlXAStatement_XAType
{
public:
  static MySqlXAStatement_XAType_ptr START;
  static MySqlXAStatement_XAType_ptr BEGIN;
  static MySqlXAStatement_XAType_ptr END;
  static MySqlXAStatement_XAType_ptr PREPARE;
  static MySqlXAStatement_XAType_ptr COMMIT;
  static MySqlXAStatement_XAType_ptr ROLLBACK;
  static MySqlXAStatement_XAType_ptr RECOVER;

  string_ptr name;
  uint64_t mask;
  MySqlXAStatement_XAType(uint64_t mask, string_ptr name);
  static MySqlXAStatement_XAType_ptr of(string_ptr typeStr);
};

class MySqlXAStatement : virtual public MySqlStatementImpl
{
public:
  MySqlXAStatement_XAType_ptr type;
  SQLExpr_ptr id;

  SHAREDOBJECT(MySqlXAStatement);
  MySqlXAStatement_XAType_ptr getType();

  void setType(MySqlXAStatement_XAType_ptr type);

  SQLExpr_ptr getId();

  void setId(SQLExpr_ptr x);

  void accept0(MySqlASTVisitor_ptr v);
};
